package com.example.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 跨域 + Cookie 的典型问题场景分析
 * 情景复现：
 * 后端 localhost:8084 提供接口
 * 前端 HTML 页面从 localhost:63342 发请求
 * 请求中自动带了 Cookie（JSESSIONID）
 * 浏览器会检查：你是否设置了 Access-Control-Allow-Origin: http://localhost:63342
 * 并且 Access-Control-Allow-Credentials: true 是否设置了
 * 否则请求会被 浏览器拦截，不到达服务器
 */
@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                /**
                 * 2️⃣ Host
                 * Host: localhost:8084
                 * 表示请求的目标服务器地址，即：后端服务监听在哪个端口
                 * 这里是你的 Spring Boot 应用运行在 localhost:8084
                 * 3️⃣ Origin
                 * Origin: http://localhost:63342
                 * 表示当前请求是从哪个网页来源地址发出的，用于 CORS 检查
                 * 63342 是 WebStorm 的本地调试端口
                 * 因为和目标后端端口（8084）不同，所以这属于 跨域请求
                 * 🔴 如果后端没有配置 CORS 对这个 Origin 放行，浏览器会拦截。
                 * 4️⃣ Referer
                 * Referer: http://localhost:63342/
                 * 表示“你是从哪个页面跳转过来的”
                 * 通常和 Origin 一致，用于服务器做防护（防止 CSRF）
                 */
                .allowedOrigins("*") // ⚠️ 有安全风险，仅用于演示
                .allowedMethods("POST")
                .allowedHeaders("*")
                .allowCredentials(false);
    }
}
